﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using KimberlyDashboardLIB;
using System.Data;
using System.IO;

namespace KimberlyDashboard.admin
{
    public partial class SubirArchivos : cGlobal
    {
        protected void Page_Load(object sender, EventArgs e)
        {            
            if (!Page.IsPostBack)
            {
                this.MostrarArchivos();
            }
        }

        private bool ValidarArchivo()
        {
            string mensaje = "";
            //Longitud de los textos
            if (!this.FileUpload1.HasFile)
                mensaje += "- Debe seleccionar el archivo";
            else
            {
                if ((this.FileUpload1.FileName.EndsWith(".exe")) || (this.FileUpload1.FileName.EndsWith(".bat")))
                    mensaje += "- Archivo inválido";
            }

            if (mensaje.Length > 0)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se puede subir la información: " + mensaje + "'); </Script>");
                return false;
            }
            else
                return true;
        }

        protected void lnkGuardar_Click(object sender, EventArgs e)
        {
            if (this.ValidarArchivo())
            {
                string ruta = Server.MapPath("~/archivosDatos");
                //string ruta = @"C:\Inetpub\vhosts\shinkasoftware.com\httpdocs\kpis\archivosDatos";
                
                try
                {
                    ruta = Path.Combine(ruta, FileUpload1.FileName);
                    this.FileUpload1.SaveAs(ruta);
                }
                catch (Exception ex)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudo guardar el archivo: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
                }

                this.MostrarArchivos();
            }

        }

        private void MostrarArchivos() 
        {
            try
            {                
                DataTable dt = new DataTable();
                dt.Columns.Add("ARCHIVO");
                dt.Columns.Add("FECHA");

                //recorre la carpeta archivosDatos y va agregando los archivos al dataTable
                DataRow dr;
                string[] archivos = Directory.GetFiles(Server.MapPath("~/archivosDatos"));                
                //string[] archivos = Directory.GetFiles(@"C:\Inetpub\vhosts\shinkasoftware.com\httpdocs\kpis\archivosDatos");
                
                foreach (string a in archivos)
                {                    
                    dr = dt.NewRow();                    
                    dr["ARCHIVO"] = Path.GetFileName(a);
                    dr["FECHA"] = File.GetLastWriteTime(a);
                    dt.Rows.Add(dr);
                }

                this.grdResultados.DataSource = dt;
                this.grdResultados.DataBind();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudo cargar la información de los archivos exsistentes: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }

        protected void grdResultados_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //Obtiene el archivo a eliminar
            string nombreArchivo = this.grdResultados.DataKeys[e.RowIndex].Value.ToString();
            try
            {                
                string ruta = Path.Combine(Server.MapPath("~/archivosDatos"), nombreArchivo);
                //string ruta = Path.Combine(@"C:\Inetpub\vhosts\shinkasoftware.com\httpdocs\kpis\archivosDatos", nombreArchivo);
                
                if (File.Exists(ruta))
                {
                    File.Delete(ruta);
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se encontró el archivo'); </Script>");
                }
                this.MostrarArchivos();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudo eliminar el indicador: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }

    }
}